home *** CD-ROM | disk | FTP | other *** search
/ Aminet 13 / Aminet 13 - August 1996.iso / MainActor / Rexx / LoadMPEG_adpro.ma < prev    next >
Text File  |  1996-07-09  |  9KB  |  373 lines

  1. /*                                                                        */
  2. /*  LoadMPEG_adpro.ma                                    Alex Kazik 1994  */
  3. /*  LoadMPEG_HAM6.ma                                                      */
  4. /*  LoadMPEG_HAM8.ma          Alle drei ARexx-Scripte sind zum laden von  */
  5. /*                    MPEG-Animationen. Das Script xxx_adpro konvertiert  */
  6. /*                     die Bilder mit hilfe von ADPro auf ein beliebiges  */
  7. /*   Format, dir Dither und Palette Option wird unterstützt. Dir Scripte  */
  8. /*      xxx_HAM* wandeln die Anim ohne ADPro in das HAM6/HAM8 format um.  */
  9. /*                                                                        */
  10. /*   Alle verwendeten Programme zur decodiering der MPEG-Anims sowie der  */
  11. /*   Konvertierung yuv2ppm und ppm2ilbm sind Public-Domain.               */
  12. /*                                                                        */
  13. /*                                                                        */
  14. /*   please read the .doc for english infomation                          */
  15.  
  16.  
  17. OPTIONS RESULTS
  18.  
  19. address MAINACTOR
  20. printandstoretxt "ALX:MPEG Loader  -  by Alex Kazik 1994"
  21.  
  22. RequestFile "Select MPEG-File"
  23. IF RC = 10 THEN 
  24.   call xEXIT 1
  25. mpgfile = RESULT
  26.  
  27. if ( exists(mpgfile) = 0 ) then
  28.   call xexit 6
  29.  
  30. RequestSaveFile "Select Dest-File"
  31. IF RC = 10 THEN 
  32.   call xEXIT 1
  33. newname = RESULT
  34.  
  35. IF exists(newname) then do
  36.   printtxt "ALX:File already exists, replace?"
  37.   RequestSaveFile "Replace File -> select again!"
  38.   IF (RC = 10) | (RESULT ~= newname) then
  39.     call xexit 5
  40.   ADDRESS COMMAND 'delete' newname
  41. end
  42.  
  43. printtxt "ALX:Decoding MPEG..."
  44. ADDRESS COMMAND 'copy' mpgfile newname || '.mpg'
  45. wbtofront
  46. ADDRESS COMMAND 'MainActor:mpeg/mpeg -d' newname '>CON:'
  47. screentofront
  48. printtxt "ALX:Deleting TEMP."
  49. ADDRESS COMMAND 'delete' newname || '.mpg'
  50. pics=0
  51. picname = newname || pics
  52. if exists(picname || ".Y") = 0 then do
  53.   call xexit 2
  54. end
  55. if exists(picname || ".U") = 0 then do
  56.   call xexit 2
  57. end
  58. if exists(picname || ".V") = 0 then do
  59.   call xexit 2
  60. end
  61. pics=1
  62. picname = newname || pics
  63. if exists(picname || ".Y") = 0 then do
  64.   call xexit 7
  65. end
  66. if exists(picname || ".U") = 0 then do
  67.   call xexit 7
  68. end
  69. if exists(picname || ".V") = 0 then do
  70.   call xexit 7
  71. end
  72. xxx = 1
  73. do while xxx = 1
  74.   pics = pics + 1
  75.   picname = newname || pics
  76.   if exists(picname || ".Y") = 0 then
  77.     xxx = 0
  78.   if exists(picname || ".U") = 0 then
  79.     xxx = 0
  80.   if exists(picname || ".V") = 0 then
  81.     xxx = 0
  82. end
  83. printandstoretxt "ALX:Could find" pics "Pictures."
  84. RequestInteger 352 "Original picture-width of the MEPG"
  85. IF RC = 10 THEN 
  86.   call xEXIT 
  87. width=RESULT
  88. RequestInteger 240 "Original picture-height of the MPEG"
  89. IF RC = 10 THEN
  90.   call xEXIT 1
  91. height=RESULT
  92.  
  93. DO i=1 to pics                           
  94.   yuvpic = i - 1
  95.   yuvname = newname || yuvpic
  96.   actualpic=newname || "." || Right("00000" || i, 5)
  97.  
  98.   printtxt "ALX:Converting Pic" i || "/" || pics || ".  (YUV -> PPM)"
  99.   ADDRESS COMMAND 'MainActor:mpeg/cyuv2ppm' yuvname 'T:ppm.TEMP' '-iw' width '-ih' height
  100.   printtxt "ALX:Converting Pic" i || "/" || pics || ".  (PPM -> IFF)"
  101.   ADDRESS COMMAND 'MainActor:mpeg/ppmtoilbm >' || actualpic '-24FORCE' 'T:ppm.TEMP'
  102.   printtxt "ALX:Converting Pic" i || "/" || pics || ".  (deleting TEMP)"
  103.   ADDRESS COMMAND 'delete' yuvname || ".?"
  104. END
  105.  
  106. ADDRESS COMMAND 'delete t:ppm.TEMP'
  107.  
  108. IF ~SHOW('P','ADPro') THEN DO  
  109.   PrintTXT "ALX:Invoking AdPro..."
  110.   ADDRESS COMMAND 'run >NIL: <NIL: adpro:adpro BEHIND MAXMEM=1000000'
  111.   ADDRESS COMMAND Wait 1
  112.   i = 1
  113.   j = 30
  114.   DO UNTIL (SHOW('P','ADPro')) | (i=0)
  115.     ADDRESS COMMAND Wait 1
  116.     PrintTXT "ALX:Invoking AdPro...   (" || i || " sec)"
  117.     i = i + 1
  118.     if (i=j) then do
  119.       RequestInteger 0 "Who long I should sill wait?  (until now " || i || 'sec | 0=Abb.)'
  120.       IF RC = 10 then
  121.         i = 0
  122.       ELSE DO
  123.         j = j + RESULT
  124.         if i = j then
  125.           i = 0
  126.       END
  127.     END
  128.   END
  129.   CloseADPro = 1
  130. END  
  131. ELSE
  132.   CloseADPro = 0
  133.  
  134. NL = '0A'X
  135. ADDRESS "ADPro"
  136. ADPRO_TO_FRONT
  137. TempDefaults = "T:TempADProDefaults"
  138. SAVE_DEFAULTS TempDefaults
  139. PSTATUS
  140. oldPSTATUS = ADPRO_RESULT
  141. LOAD_TYPE REPLACE
  142. oldLoadType = ADPRO_RESULT
  143. ORIENTATION PORTRAIT
  144. oldLoadOrient = ADPRO_RESULT
  145. LFORMAT "IFF"
  146. oldLoader = ADPRO_RESULT
  147. IF (RC ~= 0) THEN DO
  148.   ADPRO_TO_FRONT
  149.   call xexit 3
  150. END
  151. SFORMAT "ANIM"
  152. oldSaver = ADPRO_RESULT
  153. IF (RC ~= 0) THEN DO
  154.   ADPRO_TO_FRONT
  155.   call xexit 4
  156. END
  157.  
  158. CALL GetColors
  159. RENDER_TYPE colors
  160. CALL GetPalette
  161.  
  162. if (palette = "Load") then do
  163.   GETFILE '"Select Palette"' "ADPRO:Colors"
  164.   IF (RC ~= 0) then
  165.     call xexit 1
  166.   palettename = ADPRO_RESULT
  167.   PLOAD palettename
  168.   palette="Locked"
  169. end
  170. if (palette = "Locked") then do
  171.   PSTATUS locked
  172.   cpf = "CPF=NO"
  173. end
  174. else do
  175.   PSTATUS UnLocked
  176.   cpf = "CPF=YES"
  177. end
  178. CALL GetDither
  179. DITHER dithermode
  180.  
  181. ADDRESS MAINACTOR
  182. screentofront
  183. DO i=1 to pics                           
  184.   actualpic=newname || "." || Right("00000" || i, 5)
  185.  
  186.   ADDRESS MAINACTOR
  187.   printtxt "ALX:Converting Pic" i || "/" || pics || ".  (ADPro)"
  188.  
  189.   ADDRESS "ADPro"    
  190.   Load actualpic
  191.   Execute    
  192.   Save newname "APPEND" "IMAGE"
  193.  
  194.   ADDRESS MAINACTOR
  195.   printtxt "ALX:Converting Pic" i || "/" || pics || ".  (deleting TEMP)"
  196.   ADDRESS COMMAND 'delete' actualpic
  197. END
  198.  
  199. ADDRESS "ADPro"
  200. Save newname "QUIT" "IMAGE"
  201.  
  202. ADDRESS MAINACTOR
  203. GetSPName
  204.  
  205. if (rc = 0) then
  206.   OpenNewProject                         
  207. SetSPLoader "ANIM" "IFF-Anim5"                
  208. LoadProject newname             
  209.  
  210. CALL xEXIT 0
  211.  
  212.  
  213.  
  214. GetColors:
  215. GetXX.1  = "2"
  216. GetXX.2  = "4"
  217. GetXX.3  = "8"
  218. GetXX.4  = "16"
  219. GetXX.5  = "32"
  220. GetXX.6  = "64"
  221. GetXX.7  = "128"
  222. GetXX.8  = "256"
  223. GetXX.9  = "EHB"
  224. GetXX.10 = "HAM"
  225. GetXX.11 = "HAM8"
  226. GetXXMin = 1
  227. GetXXMax = 11
  228. GetXXDef = 8
  229. CALL GetLV colors
  230. PARSE VAR RESULT nr '"'colors'"' .
  231. PARSE VAR colors colors .
  232. if (nr = 0) then
  233.   call xexit 1
  234. return
  235.  
  236.  
  237.  
  238. GetPalette:
  239. ARG is
  240. GetXX.1  = "Locked"
  241. GetXX.2  = "UnLocked"
  242. GetXX.3  = "Load PAL"
  243. GetXXMin = 1
  244. GetXXMax = 3
  245. GetXXDef = 2
  246. CALL GetLV "Palette"
  247. PARSE VAR RESULT nr '"'palette'"' .
  248. PARSE VAR palette palette .
  249. if (nr = 0) then
  250.   call xexit 1
  251. return
  252.  
  253.  
  254.  
  255. GetDither:
  256. ARG is
  257. GetXX.1  = "Off    (0)"
  258. GetXX.2  = "Floyd  (1)"
  259. GetXX.3  = "Burkes (2)"
  260. GetXX.4  = "Sierra (3)"
  261. GetXX.5  = "Jarvis (4)"
  262. GetXX.6  = "Stucki (5)"
  263. GetXX.7  = "Random (6)"
  264. GetXX.8  = "Lg Ord (7)"
  265. GetXX.9  = "Sm Ord (8)"
  266. GetXXMin = 1
  267. GetXXMax = 9
  268. GetXXDef = 1
  269. CALL GetLV "DITHER"
  270. PARSE VAR RESULT dithermode '"'nr'"' .
  271. if (dithermode = 0) then
  272.   call xexit 1
  273. dithermode = dithermode - 1
  274. IF (Dithermode = 6) | (Dithermode = 7) | (Dithermode = 8) THEN DO
  275.   continue = 0
  276.   ADDRESS "ADPro"
  277.   GETNUMBER '"Enter Dither Amount"' 16 1 256
  278.   DitherAmt = ADPRO_RESULT
  279.  
  280.   IF (RC ~= 0) THEN
  281.     call xexit 1
  282.   DITHER_AMOUNT ditheramt
  283. END
  284. return
  285.  
  286.  
  287.  
  288. xexit:
  289. ARG fehler
  290. if (fehler = 0) then
  291.   fehler = "Done."
  292. else if (fehler = 1) then
  293.   fehler = "Aborted!"
  294. else if (fehler = 2) then
  295.   fehler = "Error while decoding."
  296. else if (fehler = 3) then
  297.   fehler = "No IFF-Loader (ADPro)."
  298. else if (fehler = 4) then
  299.   fehler = "No ANIM-Saver (ADPro)."
  300. else if (fehler = 5) then
  301.   fehler = "File already exists."
  302. else if (fehler = 6) then
  303.   fehler = "File don't exist."
  304. else if (fehler = 7) then
  305.   fehler = "Anim must have min. 2 Pics."
  306. IF SHOW('P','ADPro') THEN DO  
  307.   address "ADPro"
  308.   adpro_to_front
  309.   if (fehler ~= "Done.") then
  310.     OKAY1 fehler
  311.   LFORMAT oldLoader
  312.   SFORMAT oldSaver
  313.   PSTATUS oldpstatus
  314.   LOAD_TYPE oldLoadType
  315.   ORIENTATION oldLoadOrient
  316.   IF (EXISTS( TempDefaults )) THEN DO
  317.     LOAD_DEFAULTS TempDefaults
  318.     IF (RC ~= 0) THEN DO
  319.       ADPRO_TO_FRONT
  320.       OKAY1 "Error restoring settings."
  321.       ADPRO_TO_BACK
  322.     END
  323.     ADDRESS COMMAND "Delete >NIL:" TempDefaults
  324.   END
  325.   if CloseADPro then do
  326.     OKAY2 "Should I quit ADPro?" || NL || NL || "    OK - Yep" || NL || "CANCEL - NO."
  327.     IF RC ~= 0 then 
  328.       ADPRO_EXIT
  329.   END
  330. end
  331.  
  332. address MAINACTOR
  333. Screentofront
  334. PrintAndStoreTxt "ALX:" || fehler
  335. exit
  336.  
  337.  
  338.  
  339. GetLV:
  340. ARG GetXXTitle
  341. GetXXReq = 0
  342. String = '"' || GetXX.GetXXDef || '"'
  343. DO LoopCounter = GetXXMin TO GetXXMax
  344.     String = String '"' || GetXX.LoopCounter || '"'
  345. END
  346. ADDRESS "ADPro"
  347. ADPRO_TO_FRONT
  348.  
  349. continue = 0
  350. DO UNTIL (continue = 1)
  351.   LISTVIEW GetXXTitle (GetXXMax-GetXXMin+1) ITEMS String
  352.   LISTVIEW_RC = RC
  353.   PARSE VAR ADPRO_RESULT '"'GetXXStr'"' scratch
  354.  
  355.   GetXXRet = GetXXMin
  356.   DO WHILE (GetXXRet <= GetXXMax) & (COMPARE( GetXXStr, GetXX.GetXXRet ) ~= 0)
  357.     GetXXRet = GetXXRet + 1
  358.   END
  359.  
  360.   IF ((LISTVIEW_RC ~= 0) & (LISTVIEW_RC ~= 1)) | (GetXXStr=" -----") THEN DO
  361.     OKAY2 "This value is requied." || NL || NL || "    OK - Try it againl" || NL || "CANCEL - Abort."
  362.     IF (RC = 0) THEN do
  363.       GetXXRet=0
  364.       continue=1
  365.     end
  366.   END
  367.   ELSE 
  368.     continue = 1
  369. END
  370. if (GetXXRet > GetXXMax) then
  371.   GetXXRet=0
  372. Return GetXXRet '"' || GetXXStr || '"'
  373.